查看原文
其他

使用Unity制作《龙珠》龟派气功冲击波

Harry Alisavakis Unity官方平台 2022-05-07

本文将由游戏开发者Harry Alisavakis分享仿《龙珠》动画制作的龟派气功冲击波,帮助你掌握光束、扬尘圈效果、充能球体的制作过程,以及粒子的使用方法。


龟派气功冲击波特效如下图所示,下面将为大家一一讲解制作方法。


光束:实现效果的方法

光速效果的主要灵感来自开发者ErbGameArt展示的华丽光束效果,如下图所示。



虽然颜色配色方案很相似,但我使用的创作方法却全然不同。我实现的主要方法是对带有自定义着色器的网格进行分层。


由于我倾向于实现风格化效果,所使用的着色器是非自发光的,而且带有基于灰度图噪声纹理的消融效果和顶点替换效果。这个着色器是我的VFX Master Shader,我也把它用到了其它效果上。

 

光束由黑色、浅蓝色、浅橙色三种不同的颜色组成,于是我对三个网格进行了分层,每个网格都有不同的材质,因此我可以在移动效果有更大的深度和多样性,以实现复杂动作的感觉。


影响特效的关键元素

龟派气功冲击波特效有三个关键元素:

 

1、实际的光束效果,包括:根部的漩涡效果和粒子系统,以及光束周围的旋转光束。


 

2、位于光束根部的充能球体。

  


3、在施放光束的球体周围的扬尘圈。

 

扬尘圈

主角周围的扬尘圈非常简单。我使用了简单的圆锥体网格,将其应用了一个带有主着色器的材质。着色器会获取尖刺纹理,然后在X轴进行平移。


在没有添加纹理的时候,效果如下图所示。



我使用的纹理如下图所示。

 


我在Substance Designer中把它们快速组合起来。



在网格中嵌套网格可以实现更为复杂的效果,而尖刺纹理为它提供了类似动画片的感觉。扬尘圈的动画非常简单,它在开始和结束时进行缩放,我把材质的Cutoff值提高到1,使效果可以逐渐淡化。

 

需要说明的是,该效果的所有动画并不都是通过Unity动画系统实现的,而是通过我开发的自定义动画工具BNA Animator制作的。这可以通过使用简单函数来处理平移、缩放、旋转等简单的动画。

 

BNA Animator提供了我需要的控制功能来执行动画,例如:实现特定持续时间、组合动画,以及在动画开始和结束时调用事件。它一个重要功能是允许我调整材质属性,例如:浮点值和颜色,因此我可以轻松调整材质的Alpha Cutoff,使它们淡入或淡出。

 

光束球

在我开始制作特效时,通常从冲击力最大的元素开始,在该特效中,这种元素是光束。在对光束进行一些处理后,我必须为光束制作一个来源,它是构建预期效果所需要的内容。


我在光束根部制作球体,制作方法和光束相同,我也使用了光束的相同材质,这也有助于实现效果的一致性。


我使用了三个互相嵌套的球体网格,每个网格都有不同的材质,单独的球体如下图所示。


 

通过使用BNA Animator,我为球体制作了动画序列。它首先会缓慢增大为正常大小的120%,然后快速缩小为0,在光束开始发射时重新回到100%的大小。

 

为了增加充能的感觉,在它增大的过程中,我添加了以负值速度向球体中心移动的粒子。在光束源为光束发射而恢复大小时,我使用另一个粒子系统,使它爆发出带有尾迹和噪声的粒子,从而在球体恢复大小时加入小型的局部冲击效果。

 

这种特效最大的挑战是设置正确的缩放时间,BNA Animator提供了帮助,让我知道其它效果的准确持续时间和延迟。


光环和粒子

作为光束的部分爆炸冲击效果,我加入了二个来自发射源球体中心的光环效果,这些光环效果正常时候如下图所示。



我会在不同效果中大量使用它们,实现更为风格化的冲击效果。


其中的网格实际上是没有底面的圆柱体,它们经过了压缩和旋转处理。我给网格应用了带有VFX主着色器的材质,在为了表现冲击波效果,我增大网格,同时提高它们Cutoff值,以实现消融效果。这些网格还应用了灰度图噪声纹理。

 

光束根部的粒子来自一个简单的粒子系统,用于实现剧烈的火花效果,粒子在移动方向上有很大的移动速度和噪声效果。我在这些粒子背后添加了较短的尾迹,使它们跟随移动的起伏效果,从而实现更加平滑的外观。

 

粒子剧烈的移动效果的同时,保持尾迹的平滑效果是极具挑战性的。最开始的时候,粒子要么漂浮感太强且速度太慢,要么在没有尾迹时不够明显。


 

除了粒子系统外,还有点光源向球体投射阴影。最初,我将把它作为测试内容而添加,但我喜欢在施放对象前有大型发光物体的效果,同时阴影会落在施放对象的后面。在效果期间,光的强度也随着光束大小的变化而发生波动。


光束

光束是我第一个开始制作的部分,它最初作为小型概念验证而制作,用于确定我想象的效果是否可以实现。束也是由三个简单网格组成,这些网格和冲击环所使用的网格一样,也是没有底面的拉伸圆柱体。


单独的光束效果如下图所示。


 

光束都比较简单,使用了基于VFX主着色器的材质。我没有给颜色使用梯度图或其它功能,只是平移了噪声纹理,基于纹理消融网格,然后对纹理和顶点应用少量替换效果。

 

给这些材质使用的噪声纹理都比较通用,我通常会延伸或平铺这些纹理,以获得不同的结果。我为这些材质使用的噪声纹理如下,它们也用到了球体网格上。


下图是破碎的黑色纹理。



下图是内部元素的纹理。

 

 

下图是用于替换效果的纹理。

 


能量翻滚效果使用另一个特制的着色器制作。它们实际上是带有少量细分效果的一些简单网格条带,着色器会偏移它们的顶点,把它们转变为螺旋形效果。


通过使用该着色器,我可以轻松调整旋转的频率,修改颜色,并实现漩涡般的动作。针对这个效果,我也给着色器添加了“fill”属性,从而使带状效果沿着长度逐渐出现和消失。

 

下面是漩涡带着色器的工作效果。


 

虽然展示起来很困难,但是顶点替换过程发生在3D环境,它不仅仅在Y轴上发生偏移。

 

在光束开始时,有一个使用VFX主着色器的四边形。为了使它有漩涡效果,我使用极坐标采样了噪声纹理。我通过平移纹理,使它同时发生漩涡效果并向内移动,从而实现了炫酷的传送门效果。


我也使用了梯度图来给效果添加颜色,并应用了一些来自主着色器的其它技巧,包括: 

  • 色带效果或色调分离效果

  • 圆圈遮罩,使效果不会被四边形的边缘截断

  • 不透明几何体的柔和混合效果


在单独观察四边形时,可以注意到其中的一些效果。

 


完成光束后,我制作了漩涡四边形,给光束提供了来源的位置。然而,我没有在光束末端做类似的事,因为这对效果展示并不必要。


为了给光速提供有节奏的动作效果,我使用BNA Animator来增大和缩小光束,使它更有活力。材质上的顶点替换效果也提供了帮助,它给网格添加了小型的变化体积。


反馈

我觉得这次尝试中最有趣的地方不是视觉元素,而是动画,时间设置和伴随效果。


在我单独制作效果的各个元素时,我有光束射出球体的效果,虽然我认为它很炫酷,但是它没有给我留下很深的印象。在我添加屏幕抖动效果,点光源和径向模糊效果,并且看到整个效果组合起来后,我才确确实实感受到光束的冲击力。

 

在第一次看到整体效果时,我和我的同事都发出了惊叹,这是非常好的现象。我相信效果传达给观众的感觉很重要,所以这才是我的主要目标。

 

需要注意的是,在某些情况下,具有冲击力或吸引人的效果不一定是复杂或庞大的效果。没有进行优化的时候,该冲击波效果的过度绘制时的画面如下图所示。



虽然看起来很简单,但它是外观很简洁的效果。


作为开发者,能够自由创作出对观众或玩家带来强烈冲击力的炫酷效果,这种感觉真的很棒。我还在努力探索高效的简化工作流程,以通过使用自己的工具结合所有外观和动画的内容。

 

如果你对本文中的VFX主着色器感兴趣,你可以访问教程:

https://halisavakis.com/my-take-on-shaders-vfx-master-shader-part-i/


小结

如何使用Unity制作《龙珠》龟派气功冲击波为大家介绍到这里,Unity也推出了Visual Effect Graph帮助大家制作炫酷的特效,我们也将在后续文章中进行介绍。


更多Unity最新信息,请关注Unity Connect平台(Connect.unity.com)下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方


推荐阅读

使用Unity实现魔法火焰效果

使用自定义渲染纹理实现炫酷特效

制作蝴蝶烟火视觉特效

在Unity中创作龙卷风特效

使用Visual Effect Graph创作惊艳的视觉效果

Visual Effect Graph示例项目

《Sherman》项目背后的技术细节(2)

《CF穿越火线》引擎动画案例分享(上)


技术直播

6月26日星期三晚Unity行业解决方案顾问任沁明为你详细解读Unity PiXYZ 2019产品线新功能。[了解详情....


直播时间:6月26日 20:00-21:00 (星期三晚 )

直播课程:Unity PiXYZ 2019产品线新功能介绍

直播地址:

https://connect.unity.com/events/unity_pixyz_2019_new_features



喜欢本文,请点击“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存